'use strict';
/**
 * author：小小游 --- allen
 * date：2018.02.04
 * lastUpdateDate：2018.02.04
 * description：Iterator遍历器与for-of循环的配合使用
 */
// 来看看怎么玩耍Iterator遍历器与for-of循环
/**
 * 数组有一个Symbol.iterator的属性，当我们调用它arr[Symbol.iterator]()，
 * 它会返回一个Iterator的指针对象，如下所示：
 * 那么它调用next方法会返回两个值，格式为：{ value: 'a', done: false }
 * value表示当前正在循环遍历的值，done为false表示循环还没结束，就得继续调用
 * next()方法，直到{ value: undefined, done: true }表示值已经遍历完毕
 */
/**
 * 我们可以直接对一个类型化数组也进行iterator(迭代)
 */
 var obj = {
     length : 2,
     '0' : '111',
     '1' : '222'
 };

// 自己实现下
obj[Symbol.iterator] = [][Symbol.iterator];

/**
 * 会报错obj is not iterable简单说就是obj没有实现Symbol.iterator接口
 * 解决办法如上
 */
// obj[Symbol.iterator] = [][Symbol.iterator];
// 这样就不报错了
 for ( let i of obj ) console.log(i);
